iT邦幫忙

2024 iThome 鐵人賽

DAY 19
0
Security

密碼學小白的學習之路系列 第 19

[Day 19] 題目(Symmetric-1) & AES介紹 & 單射、滿射與對射

  • 分享至 

  • xImage
  •  

AES簡單介紹

在 AES 加密過程中,首先需要將明文數據轉換為二進位資料,然後將其分成一個個與加密金鑰長度相同的區塊(通常為 128、192 或 256 位元),這些區塊稱為「明文區塊」。接著,透過 AES 演算法,將每個明文區塊加密為對應的「密文區塊」。

簡而言之,AES 演算法將一組固定長度的輸入數據(稱為「區塊」)經由特定的「密鑰」映射為另一組輸出數據,這個映射過程即為加密。

鍵控排列 (keyed permutation)

對於每個可能的輸入塊,都存在一個唯一的輸出塊,而這個對應關係是由密鑰所控制的。

塊 (block)

  • AES的區塊長度固定為128位元

金鑰(key)

* 由Rijndael金鑰生成方案產生。
* 金鑰長度則可以是128,192或256位元

可逆性:

  • AES 加密具有可逆性,使用相同密鑰可將密文逆映射回原始明文。
  • AES具有一一對應的關係。

加密過程簡單介紹:

加密時,各輪AES加密迴圈(除最後一輪外)均包含4個步驟:
如圖所示:

  1. AddRoundKey—矩陣中的每一個位元組都與該次回合金鑰(round key)做XOR運算;每個子金鑰由金鑰生成方案產生。
  2. SubBytes—透過一個非線性的替換函式,用尋找表的方式把每個位元組替換成對應的位元組。
  3. ShiftRows—將矩陣中的每個橫列進行循環式移位。
  4. MixColumns—為了充分混合矩陣中各個直行的操作。這個步驟使用線性轉換來混合每行內的四個位元組。

最後一個加密迴圈中省略MixColumns步驟,而以另一個AddRoundKey取代。

延伸: 單射、滿射與對射

單射(Injection)

  • 函數中,每個輸入都有唯一的輸出,且不同的輸入對應不同的輸出。
  • 沒有兩個不同的輸入映射到相同的輸出。

滿射(Surjection)

  • 函數的輸出涵蓋了值域中的每一個元素。
  • 每個值域中的元素至少對應一個定義域中的輸入。

對射(Bijection)

  • 同時具備單射和滿射特性的函數。
  • 對射是一種一對一且完全對應的函數。

話不多說直接上圖:
https://ithelp.ithome.com.tw/upload/images/20240824/20168165TE2eGTHovT.png

Keyed Permutations

https://ithelp.ithome.com.tw/upload/images/20240824/20168165GMQMEky4Ra.png

題意:

介紹 AES 加密算法的核心概念。
主要的重點我都統整在上面的介紹了,題目問我們一對一在數學上的術語是什麼。
根據上面的內容,這是對射(Bijection)。
所以flag為

crypto{Bijection}

參考資料:

AES介紹:

單射、滿射與對射:

後話:

今天閱讀了這些內容,同時思考後續的內容要寫什麼。應該可以把AES的部分寫完,但是原先想寫的古典密碼和解題....可能很難兩者都寫。


上一篇
[Day 18] 題目(Modular-11)
下一篇
[Day 20] 題目(Symmetric-2、3)
系列文
密碼學小白的學習之路31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言